home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 6 / CU Amiga Magazine's Super CD-ROM 06 (1996)(EMAP Images)(GB)(Track 1 of 4)[!][issue 1997-01].iso / cucd / prog / gnu-c / src / gcc-2.7.0-amiga / gcc.info-24 (.txt) < prev    next >
GNU Info File  |  1995-06-16  |  32KB  |  589 lines

  1. This is Info file gcc.info, produced by Makeinfo-1.55 from the input
  2. file gcc.texi.
  3.    This file documents the use and the internals of the GNU compiler.
  4.    Published by the Free Software Foundation 59 Temple Place - Suite 330
  5. Boston, MA 02111-1307 USA
  6.    Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software
  7. Foundation, Inc.
  8.    Permission is granted to make and distribute verbatim copies of this
  9. manual provided the copyright notice and this permission notice are
  10. preserved on all copies.
  11.    Permission is granted to copy and distribute modified versions of
  12. this manual under the conditions for verbatim copying, provided also
  13. that the sections entitled "GNU General Public License," "Funding for
  14. Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
  15. included exactly as in the original, and provided that the entire
  16. resulting derived work is distributed under the terms of a permission
  17. notice identical to this one.
  18.    Permission is granted to copy and distribute translations of this
  19. manual into another language, under the above conditions for modified
  20. versions, except that the sections entitled "GNU General Public
  21. License," "Funding for Free Software," and "Protect Your Freedom--Fight
  22. `Look And Feel'", and this permission notice, may be included in
  23. translations approved by the Free Software Foundation instead of in the
  24. original English.
  25. File: gcc.info,  Node: Cross-compilation,  Next: Misc,  Prev: Debugging Info,  Up: Target Macros
  26. Cross Compilation and Floating Point
  27. ====================================
  28.    While all modern machines use 2's complement representation for
  29. integers, there are a variety of representations for floating point
  30. numbers.  This means that in a cross-compiler the representation of
  31. floating point numbers in the compiled program may be different from
  32. that used in the machine doing the compilation.
  33.    Because different representation systems may offer different amounts
  34. of range and precision, the cross compiler cannot safely use the host
  35. machine's floating point arithmetic.  Therefore, floating point
  36. constants must be represented in the target machine's format.  This
  37. means that the cross compiler cannot use `atof' to parse a floating
  38. point constant; it must have its own special routine to use instead.
  39. Also, constant folding must emulate the target machine's arithmetic (or
  40. must not be done at all).
  41.    The macros in the following table should be defined only if you are
  42. cross compiling between different floating point formats.
  43.    Otherwise, don't define them.  Then default definitions will be set
  44. up which use `double' as the data type, `==' to test for equality, etc.
  45.    You don't need to worry about how many times you use an operand of
  46. any of these macros.  The compiler never uses operands which have side
  47. effects.
  48. `REAL_VALUE_TYPE'
  49.      A macro for the C data type to be used to hold a floating point
  50.      value in the target machine's format.  Typically this would be a
  51.      `struct' containing an array of `int'.
  52. `REAL_VALUES_EQUAL (X, Y)'
  53.      A macro for a C expression which compares for equality the two
  54.      values, X and Y, both of type `REAL_VALUE_TYPE'.
  55. `REAL_VALUES_LESS (X, Y)'
  56.      A macro for a C expression which tests whether X is less than Y,
  57.      both values being of type `REAL_VALUE_TYPE' and interpreted as
  58.      floating point numbers in the target machine's representation.
  59. `REAL_VALUE_LDEXP (X, SCALE)'
  60.      A macro for a C expression which performs the standard library
  61.      function `ldexp', but using the target machine's floating point
  62.      representation.  Both X and the value of the expression have type
  63.      `REAL_VALUE_TYPE'.  The second argument, SCALE, is an integer.
  64. `REAL_VALUE_FIX (X)'
  65.      A macro whose definition is a C expression to convert the
  66.      target-machine floating point value X to a signed integer.  X has
  67.      type `REAL_VALUE_TYPE'.
  68. `REAL_VALUE_UNSIGNED_FIX (X)'
  69.      A macro whose definition is a C expression to convert the
  70.      target-machine floating point value X to an unsigned integer.  X
  71.      has type `REAL_VALUE_TYPE'.
  72. `REAL_VALUE_RNDZINT (X)'
  73.      A macro whose definition is a C expression to round the
  74.      target-machine floating point value X towards zero to an integer
  75.      value (but still as a floating point number).  X has type
  76.      `REAL_VALUE_TYPE', and so does the value.
  77. `REAL_VALUE_UNSIGNED_RNDZINT (X)'
  78.      A macro whose definition is a C expression to round the
  79.      target-machine floating point value X towards zero to an unsigned
  80.      integer value (but still represented as a floating point number).
  81.      x has type `REAL_VALUE_TYPE', and so does the value.
  82. `REAL_VALUE_ATOF (STRING, MODE)'
  83.      A macro for a C expression which converts STRING, an expression of
  84.      type `char *', into a floating point number in the target machine's
  85.      representation for mode MODE.  The value has type
  86.      `REAL_VALUE_TYPE'.
  87. `REAL_INFINITY'
  88.      Define this macro if infinity is a possible floating point value,
  89.      and therefore division by 0 is legitimate.
  90. `REAL_VALUE_ISINF (X)'
  91.      A macro for a C expression which determines whether X, a floating
  92.      point value, is infinity.  The value has type `int'.  By default,
  93.      this is defined to call `isinf'.
  94. `REAL_VALUE_ISNAN (X)'
  95.      A macro for a C expression which determines whether X, a floating
  96.      point value, is a "nan" (not-a-number).  The value has type `int'.
  97.      By default, this is defined to call `isnan'.
  98.    Define the following additional macros if you want to make floating
  99. point constant folding work while cross compiling.  If you don't define
  100. them, cross compilation is still possible, but constant folding will
  101. not happen for floating point values.
  102. `REAL_ARITHMETIC (OUTPUT, CODE, X, Y)'
  103.      A macro for a C statement which calculates an arithmetic operation
  104.      of the two floating point values X and Y, both of type
  105.      `REAL_VALUE_TYPE' in the target machine's representation, to
  106.      produce a result of the same type and representation which is
  107.      stored in OUTPUT (which will be a variable).
  108.      The operation to be performed is specified by CODE, a tree code
  109.      which will always be one of the following: `PLUS_EXPR',
  110.      `MINUS_EXPR', `MULT_EXPR', `RDIV_EXPR', `MAX_EXPR', `MIN_EXPR'.
  111.      The expansion of this macro is responsible for checking for
  112.      overflow.  If overflow happens, the macro expansion should execute
  113.      the statement `return 0;', which indicates the inability to
  114.      perform the arithmetic operation requested.
  115. `REAL_VALUE_NEGATE (X)'
  116.      A macro for a C expression which returns the negative of the
  117.      floating point value X.  Both X and the value of the expression
  118.      have type `REAL_VALUE_TYPE' and are in the target machine's
  119.      floating point representation.
  120.      There is no way for this macro to report overflow, since overflow
  121.      can't happen in the negation operation.
  122. `REAL_VALUE_TRUNCATE (MODE, X)'
  123.      A macro for a C expression which converts the floating point value
  124.      X to mode MODE.
  125.      Both X and the value of the expression are in the target machine's
  126.      floating point representation and have type `REAL_VALUE_TYPE'.
  127.      However, the value should have an appropriate bit pattern to be
  128.      output properly as a floating constant whose precision accords
  129.      with mode MODE.
  130.      There is no way for this macro to report overflow.
  131. `REAL_VALUE_TO_INT (LOW, HIGH, X)'
  132.      A macro for a C expression which converts a floating point value X
  133.      into a double-precision integer which is then stored into LOW and
  134.      HIGH, two variables of type INT.
  135. `REAL_VALUE_FROM_INT (X, LOW, HIGH)'
  136.      A macro for a C expression which converts a double-precision
  137.      integer found in LOW and HIGH, two variables of type INT, into a
  138.      floating point value which is then stored into X.
  139. File: gcc.info,  Node: Misc,  Prev: Cross-compilation,  Up: Target Macros
  140. Miscellaneous Parameters
  141. ========================
  142.    Here are several miscellaneous parameters.
  143. `PREDICATE_CODES'
  144.      Define this if you have defined special-purpose predicates in the
  145.      file `MACHINE.c'.  This macro is called within an initializer of an
  146.      array of structures.  The first field in the structure is the name
  147.      of a predicate and the second field is an array of rtl codes.  For
  148.      each predicate, list all rtl codes that can be in expressions
  149.      matched by the predicate.  The list should have a trailing comma.
  150.      Here is an example of two entries in the list for a typical RISC
  151.      machine:
  152.           #define PREDICATE_CODES \
  153.             {"gen_reg_rtx_operand", {SUBREG, REG}},  \
  154.             {"reg_or_short_cint_operand", {SUBREG, REG, CONST_INT}},
  155.      Defining this macro does not affect the generated code (however,
  156.      incorrect definitions that omit an rtl code that may be matched by
  157.      the predicate can cause the compiler to malfunction).  Instead, it
  158.      allows the table built by `genrecog' to be more compact and
  159.      efficient, thus speeding up the compiler.  The most important
  160.      predicates to include in the list specified by this macro are
  161.      thoses used in the most insn patterns.
  162. `CASE_VECTOR_MODE'
  163.      An alias for a machine mode name.  This is the machine mode that
  164.      elements of a jump-table should have.
  165. `CASE_VECTOR_PC_RELATIVE'
  166.      Define this macro if jump-tables should contain relative addresses.
  167. `CASE_DROPS_THROUGH'
  168.      Define this if control falls through a `case' insn when the index
  169.      value is out of range.  This means the specified default-label is
  170.      actually ignored by the `case' insn proper.
  171. `CASE_VALUES_THRESHOLD'
  172.      Define this to be the smallest number of different values for
  173.      which it is best to use a jump-table instead of a tree of
  174.      conditional branches.  The default is four for machines with a
  175.      `casesi' instruction and five otherwise.  This is best for most
  176.      machines.
  177. `WORD_REGISTER_OPERATIONS'
  178.      Define this macro if operations between registers with integral
  179.      mode smaller than a word are always performed on the entire
  180.      register.  Most RISC machines have this property and most CISC
  181.      machines do not.
  182. `LOAD_EXTEND_OP (MODE)'
  183.      Define this macro to be a C expression indicating when insns that
  184.      read memory in MODE, an integral mode narrower than a word, set the
  185.      bits outside of MODE to be either the sign-extension or the
  186.      zero-extension of the data read.  Return `SIGN_EXTEND' for values
  187.      of MODE for which the insn sign-extends, `ZERO_EXTEND' for which
  188.      it zero-extends, and `NIL' for other modes.
  189.      This macro is not called with MODE non-integral or with a width
  190.      greater than or equal to `BITS_PER_WORD', so you may return any
  191.      value in this case.  Do not define this macro if it would always
  192.      return `NIL'.  On machines where this macro is defined, you will
  193.      normally define it as the constant `SIGN_EXTEND' or `ZERO_EXTEND'.
  194. `IMPLICIT_FIX_EXPR'
  195.      An alias for a tree code that should be used by default for
  196.      conversion of floating point values to fixed point.  Normally,
  197.      `FIX_ROUND_EXPR' is used.
  198. `FIXUNS_TRUNC_LIKE_FIX_TRUNC'
  199.      Define this macro if the same instructions that convert a floating
  200.      point number to a signed fixed point number also convert validly
  201.      to an unsigned one.
  202. `EASY_DIV_EXPR'
  203.      An alias for a tree code that is the easiest kind of division to
  204.      compile code for in the general case.  It may be `TRUNC_DIV_EXPR',
  205.      `FLOOR_DIV_EXPR', `CEIL_DIV_EXPR' or `ROUND_DIV_EXPR'.  These four
  206.      division operators differ in how they round the result to an
  207.      integer.  `EASY_DIV_EXPR' is used when it is permissible to use
  208.      any of those kinds of division and the choice should be made on
  209.      the basis of efficiency.
  210. `MOVE_MAX'
  211.      The maximum number of bytes that a single instruction can move
  212.      quickly from memory to memory.
  213. `MAX_MOVE_MAX'
  214.      The maximum number of bytes that a single instruction can move
  215.      quickly from memory to memory.  If this is undefined, the default
  216.      is `MOVE_MAX'.  Otherwise, it is the constant value that is the
  217.      largest value that `MOVE_MAX' can have at run-time.
  218. `SHIFT_COUNT_TRUNCATED'
  219.      A C expression that is nonzero if on this machine the number of
  220.      bits actually used for the count of a shift operation is equal to
  221.      the number of bits needed to represent the size of the object
  222.      being shifted.  When this macro is non-zero, the compiler will
  223.      assume that it is safe to omit a sign-extend, zero-extend, and
  224.      certain bitwise `and' instructions that truncates the count of a
  225.      shift operation.  On machines that have instructions that act on
  226.      bitfields at variable positions, which may include `bit test'
  227.      instructions, a nonzero `SHIFT_COUNT_TRUNCATED' also enables
  228.      deletion of truncations of the values that serve as arguments to
  229.      bitfield instructions.
  230.      If both types of instructions truncate the count (for shifts) and
  231.      position (for bitfield operations), or if no variable-position
  232.      bitfield instructions exist, you should define this macro.
  233.      However, on some machines, such as the 80386 and the 680x0,
  234.      truncation only applies to shift operations and not the (real or
  235.      pretended) bitfield operations.  Define `SHIFT_COUNT_TRUNCATED' to
  236.      be zero on such machines.  Instead, add patterns to the `md' file
  237.      that include the implied truncation of the shift instructions.
  238.      You need not define this macro if it would always have the value
  239.      of zero.
  240. `TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)'
  241.      A C expression which is nonzero if on this machine it is safe to
  242.      "convert" an integer of INPREC bits to one of OUTPREC bits (where
  243.      OUTPREC is smaller than INPREC) by merely operating on it as if it
  244.      had only OUTPREC bits.
  245.      On many machines, this expression can be 1.
  246.      When `TRULY_NOOP_TRUNCATION' returns 1 for a pair of sizes for
  247.      modes for which `MODES_TIEABLE_P' is 0, suboptimal code can result.
  248.      If this is the case, making `TRULY_NOOP_TRUNCATION' return 0 in
  249.      such cases may improve things.
  250. `STORE_FLAG_VALUE'
  251.      A C expression describing the value returned by a comparison
  252.      operator with an integral mode and stored by a store-flag
  253.      instruction (`sCOND') when the condition is true.  This
  254.      description must apply to *all* the `sCOND' patterns and all the
  255.      comparison operators whose results have a `MODE_INT' mode.
  256.      A value of 1 or -1 means that the instruction implementing the
  257.      comparison operator returns exactly 1 or -1 when the comparison is
  258.      true and 0 when the comparison is false.  Otherwise, the value
  259.      indicates which bits of the result are guaranteed to be 1 when the
  260.      comparison is true.  This value is interpreted in the mode of the
  261.      comparison operation, which is given by the mode of the first
  262.      operand in the `sCOND' pattern.  Either the low bit or the sign
  263.      bit of `STORE_FLAG_VALUE' be on.  Presently, only those bits are
  264.      used by the compiler.
  265.      If `STORE_FLAG_VALUE' is neither 1 or -1, the compiler will
  266.      generate code that depends only on the specified bits.  It can also
  267.      replace comparison operators with equivalent operations if they
  268.      cause the required bits to be set, even if the remaining bits are
  269.      undefined.  For example, on a machine whose comparison operators
  270.      return an `SImode' value and where `STORE_FLAG_VALUE' is defined as
  271.      `0x80000000', saying that just the sign bit is relevant, the
  272.      expression
  273.           (ne:SI (and:SI X (const_int POWER-OF-2)) (const_int 0))
  274.      can be converted to
  275.           (ashift:SI X (const_int N))
  276.      where N is the appropriate shift count to move the bit being
  277.      tested into the sign bit.
  278.      There is no way to describe a machine that always sets the
  279.      low-order bit for a true value, but does not guarantee the value
  280.      of any other bits, but we do not know of any machine that has such
  281.      an instruction.  If you are trying to port GNU CC to such a
  282.      machine, include an instruction to perform a logical-and of the
  283.      result with 1 in the pattern for the comparison operators and let
  284.      us know (*note How to Report Bugs: Bug Reporting.).
  285.      Often, a machine will have multiple instructions that obtain a
  286.      value from a comparison (or the condition codes).  Here are rules
  287.      to guide the choice of value for `STORE_FLAG_VALUE', and hence the
  288.      instructions to be used:
  289.         * Use the shortest sequence that yields a valid definition for
  290.           `STORE_FLAG_VALUE'.  It is more efficient for the compiler to
  291.           "normalize" the value (convert it to, e.g., 1 or 0) than for
  292.           the comparison operators to do so because there may be
  293.           opportunities to combine the normalization with other
  294.           operations.
  295.         * For equal-length sequences, use a value of 1 or -1, with -1
  296.           being slightly preferred on machines with expensive jumps and
  297.           1 preferred on other machines.
  298.         * As a second choice, choose a value of `0x80000001' if
  299.           instructions exist that set both the sign and low-order bits
  300.           but do not define the others.
  301.         * Otherwise, use a value of `0x80000000'.
  302.      Many machines can produce both the value chosen for
  303.      `STORE_FLAG_VALUE' and its negation in the same number of
  304.      instructions.  On those machines, you should also define a pattern
  305.      for those cases, e.g., one matching
  306.           (set A (neg:M (ne:M B C)))
  307.      Some machines can also perform `and' or `plus' operations on
  308.      condition code values with less instructions than the corresponding
  309.      `sCOND' insn followed by `and' or `plus'.  On those machines,
  310.      define the appropriate patterns.  Use the names `incscc' and
  311.      `decscc', respectively, for the the patterns which perform `plus'
  312.      or `minus' operations on condition code values.  See `rs6000.md'
  313.      for some examples.  The GNU Superoptizer can be used to find such
  314.      instruction sequences on other machines.
  315.      You need not define `STORE_FLAG_VALUE' if the machine has no
  316.      store-flag instructions.
  317. `FLOAT_STORE_FLAG_VALUE'
  318.      A C expression that gives a non-zero floating point value that is
  319.      returned when comparison operators with floating-point results are
  320.      true.  Define this macro on machine that have comparison
  321.      operations that return floating-point values.  If there are no
  322.      such operations, do not define this macro.
  323. `Pmode'
  324.      An alias for the machine mode for pointers.  On most machines,
  325.      define this to be the integer mode corresponding to the width of a
  326.      hardware pointer; `SImode' on 32-bit machine or `DImode' on 64-bit
  327.      machines.  On some machines you must define this to be one of the
  328.      partial integer modes, such as `PSImode'.
  329.      The width of `Pmode' must be at least as large as the value of
  330.      `POINTER_SIZE'.  If it is not equal, you must define the macro
  331.      `POINTERS_EXTEND_UNSIGNED' to specify how pointers are extended to
  332.      `Pmode'.
  333. `FUNCTION_MODE'
  334.      An alias for the machine mode used for memory references to
  335.      functions being called, in `call' RTL expressions.  On most
  336.      machines this should be `QImode'.
  337. `INTEGRATE_THRESHOLD (DECL)'
  338.      A C expression for the maximum number of instructions above which
  339.      the function DECL should not be inlined.  DECL is a
  340.      `FUNCTION_DECL' node.
  341.      The default definition of this macro is 64 plus 8 times the number
  342.      of arguments that the function accepts.  Some people think a larger
  343.      threshold should be used on RISC machines.
  344. `SCCS_DIRECTIVE'
  345.      Define this if the preprocessor should ignore `#sccs' directives
  346.      and print no error message.
  347. `NO_IMPLICIT_EXTERN_C'
  348.      Define this macro if the system header files support C++ as well
  349.      as C.  This macro inhibits the usual method of using system header
  350.      files in C++, which is to pretend that the file's contents are
  351.      enclosed in `extern "C" {...}'.
  352. `HANDLE_PRAGMA (STREAM)'
  353.      Define this macro if you want to implement any pragmas.  If
  354.      defined, it should be a C statement to be executed when `#pragma'
  355.      is seen.  The argument STREAM is the stdio input stream from which
  356.      the source text can be read.
  357.      It is generally a bad idea to implement new uses of `#pragma'.  The
  358.      only reason to define this macro is for compatibility with other
  359.      compilers that do support `#pragma' for the sake of any user
  360.      programs which already use it.
  361. `VALID_MACHINE_DECL_ATTRIBUTE (DECL, ATTRIBUTES, IDENTIFIER, ARGS)'
  362.      If defined, a C expression whose value is nonzero if IDENTIFIER
  363.      with arguments ARGS is a valid machine specific attribute for DECL.
  364.      The attributes in ATTRIBUTES have previously been assigned to DECL.
  365. `VALID_MACHINE_TYPE_ATTRIBUTE (TYPE, ATTRIBUTES, IDENTIFIER, ARGS)'
  366.      If defined, a C expression whose value is nonzero if IDENTIFIER
  367.      with arguments ARGS is a valid machine specific attribute for TYPE.
  368.      The attributes in ATTRIBUTES have previously been assigned to TYPE.
  369. `COMP_TYPE_ATTRIBUTES (TYPE1, TYPE2)'
  370.      If defined, a C expression whose value is zero if the attributes on
  371.      TYPE1 and TYPE2 are incompatible, one if they are compatible, and
  372.      two if they are nearly compatible (which causes a warning to be
  373.      generated).
  374. `SET_DEFAULT_TYPE_ATTRIBUTES (TYPE)'
  375.      If defined, a C statement that assigns default attributes to newly
  376.      defined TYPE.
  377. `DOLLARS_IN_IDENTIFIERS'
  378.      Define this macro to control use of the character `$' in identifier
  379.      names.  The value should be 0, 1, or 2.  0 means `$' is not allowed
  380.      by default; 1 means it is allowed by default if `-traditional' is
  381.      used; 2 means it is allowed by default provided `-ansi' is not
  382.      used.  1 is the default; there is no need to define this macro in
  383.      that case.
  384. `NO_DOLLAR_IN_LABEL'
  385.      Define this macro if the assembler does not accept the character
  386.      `$' in label names.  By default constructors and destructors in
  387.      G++ have `$' in the identifiers.  If this macro is defined, `.' is
  388.      used instead.
  389. `NO_DOT_IN_LABEL'
  390.      Define this macro if the assembler does not accept the character
  391.      `.' in label names.  By default constructors and destructors in G++
  392.      have names that use `.'.  If this macro is defined, these names
  393.      are rewritten to avoid `.'.
  394. `DEFAULT_MAIN_RETURN'
  395.      Define this macro if the target system expects every program's
  396.      `main' function to return a standard "success" value by default
  397.      (if no other value is explicitly returned).
  398.      The definition should be a C statement (sans semicolon) to
  399.      generate the appropriate rtl instructions.  It is used only when
  400.      compiling the end of `main'.
  401. `HAVE_ATEXIT'
  402.      Define this if the target system supports the function `atexit'
  403.      from the ANSI C standard.  If this is not defined, and
  404.      `INIT_SECTION_ASM_OP' is not defined, a default `exit' function
  405.      will be provided to support C++.
  406. `EXIT_BODY'
  407.      Define this if your `exit' function needs to do something besides
  408.      calling an external function `_cleanup' before terminating with
  409.      `_exit'.  The `EXIT_BODY' macro is only needed if netiher
  410.      `HAVE_ATEXIT' nor `INIT_SECTION_ASM_OP' are defined.
  411. `INSN_SETS_ARE_DELAYED (INSN)'
  412.      Define this macro as a C expression that is nonzero if it is safe
  413.      for the delay slot scheduler to place instructions in the delay
  414.      slot of INSN, even if they appear to use a resource set or
  415.      clobbered in INSN.  INSN is always a `jump_insn' or an `insn'; GNU
  416.      CC knows that every `call_insn' has this behavior.  On machines
  417.      where some `insn' or `jump_insn' is really a function call and
  418.      hence has this behavior, you should define this macro.
  419.      You need not define this macro if it would always return zero.
  420. `INSN_REFERENCES_ARE_DELAYED (INSN)'
  421.      Define this macro as a C expression that is nonzero if it is safe
  422.      for the delay slot scheduler to place instructions in the delay
  423.      slot of INSN, even if they appear to set or clobber a resource
  424.      referenced in INSN.  INSN is always a `jump_insn' or an `insn'.
  425.      On machines where some `insn' or `jump_insn' is really a function
  426.      call and its operands are registers whose use is actually in the
  427.      subroutine it calls, you should define this macro.  Doing so
  428.      allows the delay slot scheduler to move instructions which copy
  429.      arguments into the argument registers into the delay slot of INSN.
  430.      You need not define this macro if it would always return zero.
  431. `MACHINE_DEPENDENT_REORG (INSN)'
  432.      In rare cases, correct code generation requires extra machine
  433.      dependent processing between the second jump optimization pass and
  434.      delayed branch scheduling.  On those machines, define this macro
  435.      as a C statement to act on the code starting at INSN.
  436. File: gcc.info,  Node: Config,  Next: Index,  Prev: Target Macros,  Up: Top
  437. The Configuration File
  438. **********************
  439.    The configuration file `xm-MACHINE.h' contains macro definitions
  440. that describe the machine and system on which the compiler is running,
  441. unlike the definitions in `MACHINE.h', which describe the machine for
  442. which the compiler is producing output.  Most of the values in
  443. `xm-MACHINE.h' are actually the same on all machines that GNU CC runs
  444. on, so large parts of all configuration files are identical.  But there
  445. are some macros that vary:
  446. `USG'
  447.      Define this macro if the host system is System V.
  448. `VMS'
  449.      Define this macro if the host system is VMS.
  450. `FATAL_EXIT_CODE'
  451.      A C expression for the status code to be returned when the compiler
  452.      exits after serious errors.
  453. `SUCCESS_EXIT_CODE'
  454.      A C expression for the status code to be returned when the compiler
  455.      exits without serious errors.
  456. `HOST_WORDS_BIG_ENDIAN'
  457.      Defined if the host machine stores words of multi-word values in
  458.      big-endian order.  (GNU CC does not depend on the host byte
  459.      ordering within a word.)
  460. `HOST_FLOAT_WORDS_BIG_ENDIAN'
  461.      Define this macro to be 1 if the host machine stores `DFmode',
  462.      `XFmode' or `TFmode' floating point numbers in memory with the
  463.      word containing the sign bit at the lowest address; otherwise,
  464.      define it to be zero.
  465.      This macro need not be defined if the ordering is the same as for
  466.      multi-word integers.
  467. `HOST_FLOAT_FORMAT'
  468.      A numeric code distinguishing the floating point format for the
  469.      host machine.  See `TARGET_FLOAT_FORMAT' in *Note Storage Layout::
  470.      for the alternatives and default.
  471. `HOST_BITS_PER_CHAR'
  472.      A C expression for the number of bits in `char' on the host
  473.      machine.
  474. `HOST_BITS_PER_SHORT'
  475.      A C expression for the number of bits in `short' on the host
  476.      machine.
  477. `HOST_BITS_PER_INT'
  478.      A C expression for the number of bits in `int' on the host machine.
  479. `HOST_BITS_PER_LONG'
  480.      A C expression for the number of bits in `long' on the host
  481.      machine.
  482. `ONLY_INT_FIELDS'
  483.      Define this macro to indicate that the host compiler only supports
  484.      `int' bit fields, rather than other integral types, including
  485.      `enum', as do most C compilers.
  486. `OBSTACK_CHUNK_SIZE'
  487.      A C expression for the size of ordinary obstack chunks.  If you
  488.      don't define this, a usually-reasonable default is used.
  489. `OBSTACK_CHUNK_ALLOC'
  490.      The function used to allocate obstack chunks.  If you don't define
  491.      this, `xmalloc' is used.
  492. `OBSTACK_CHUNK_FREE'
  493.      The function used to free obstack chunks.  If you don't define
  494.      this, `free' is used.
  495. `USE_C_ALLOCA'
  496.      Define this macro to indicate that the compiler is running with the
  497.      `alloca' implemented in C.  This version of `alloca' can be found
  498.      in the file `alloca.c'; to use it, you must also alter the
  499.      `Makefile' variable `ALLOCA'.  (This is done automatically for the
  500.      systems on which we know it is needed.)
  501.      If you do define this macro, you should probably do it as follows:
  502.           #ifndef __GNUC__
  503.           #define USE_C_ALLOCA
  504.           #else
  505.           #define alloca __builtin_alloca
  506.           #endif
  507.      so that when the compiler is compiled with GNU CC it uses the more
  508.      efficient built-in `alloca' function.
  509. `FUNCTION_CONVERSION_BUG'
  510.      Define this macro to indicate that the host compiler does not
  511.      properly handle converting a function value to a
  512.      pointer-to-function when it is used in an expression.
  513. `HAVE_VPRINTF'
  514.      Define this if the library function `vprintf' is available on your
  515.      system.
  516. `MULTIBYTE_CHARS'
  517.      Define this macro to enable support for multibyte characters in the
  518.      input to GNU CC.  This requires that the host system support the
  519.      ANSI C library functions for converting multibyte characters to
  520.      wide characters.
  521. `HAVE_PUTENV'
  522.      Define this if the library function `putenv' is available on your
  523.      system.
  524. `POSIX'
  525.      Define this if your system is POSIX.1 compliant.
  526. `NO_SYS_SIGLIST'
  527.      Define this if your system *does not* provide the variable
  528.      `sys_siglist'.
  529. `DONT_DECLARE_SYS_SIGLIST'
  530.      Define this if your system has the variable `sys_siglist', and
  531.      there is already a declaration of it in the system header files.
  532. `USE_PROTOTYPES'
  533.      Define this to be 1 if you know that the host compiler supports
  534.      prototypes, even if it doesn't define __STDC__, or define it to be
  535.      0 if you do not want any prototypes used in compiling GNU CC.  If
  536.      `USE_PROTOTYPES' is not defined, it will be determined
  537.      automatically whether your compiler supports prototypes by
  538.      checking if `__STDC__' is defined.
  539. `NO_MD_PROTOTYPES'
  540.      Define this if you wish suppression of prototypes generated from
  541.      the machine description file, but to use other prototypes within
  542.      GNU CC.  If `USE_PROTOTYPES' is defined to be 0, or the host
  543.      compiler does not support prototypes, this macro has no effect.
  544. `MD_CALL_PROTOTYPES'
  545.      Define this if you wish to generate prototypes for the `gen_call'
  546.      or `gen_call_value' functions generated from the machine
  547.      description file.  If `USE_PROTOTYPES' is defined to be 0, or the
  548.      host compiler does not support prototypes, or `NO_MD_PROTOTYPES'
  549.      is defined, this macro has no effect.  As soon as all of the
  550.      machine descriptions are modified to have the appropriate number
  551.      of arguments, this macro will be removed.
  552.      Some systems do provide this variable, but with a different name
  553.      such as `_sys_siglist'.  On these systems, you can define
  554.      `sys_siglist' as a macro which expands into the name actually
  555.      provided.
  556. `NO_STAB_H'
  557.      Define this if your system does not have the include file
  558.      `stab.h'.  If `USG' is defined, `NO_STAB_H' is assumed.
  559. `PATH_SEPARATOR'
  560.      Define this macro to be a C character constant representing the
  561.      character used to separate components in paths.  The default value
  562.      is.  the colon character
  563. `DIR_SEPARATOR'
  564.      If your system uses some character other than slash to separate
  565.      directory names within a file specification, define this macro to
  566.      be a C character constant specifying that character.  When GNU CC
  567.      displays file names, the character you specify will be used.  GNU
  568.      CC will test for both slash and the character you specify when
  569.      parsing filenames.
  570. `OBJECT_SUFFIX'
  571.      Define this macro to be a C string representing the suffix for
  572.      object files on your machine.  If you do not define this macro,
  573.      GNU CC will use `.o' as the suffix for object files.
  574. `EXECUTABLE_SUFFIX'
  575.      Define this macro to be a C string representing the suffix for
  576.      executable files on your machine.  If you do not define this
  577.      macro, GNU CC will use the null string as the suffix for object
  578.      files.
  579. `COLLECT_EXPORT_LIST'
  580.      If defined, `collect2' will scan the individual object files
  581.      specified on its command line and create an export list for the
  582.      linker.  Define this macro for systems like AIX, where the linker
  583.      discards object files that are not referenced from `main' and uses
  584.      export lists.
  585.    In addition, configuration files for system V define `bcopy',
  586. `bzero' and `bcmp' as aliases.  Some files define `alloca' as a macro
  587. when compiled with GNU CC, in order to take advantage of the benefit of
  588. GNU CC's built-in `alloca'.
  589.